home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_11_09 / 1109059a < prev    next >
Text File  |  1993-07-06  |  1KB  |  49 lines

  1. //  ostrwnd.cpp
  2.  
  3. #include    "stdhdr.h"
  4. #include    "ostrwnd.h"
  5.  
  6. ostreamWnd::ostreamWnd (const char * window_name)
  7.                         : CStrWnd (window_name)
  8. {
  9. max_lines_in_buffer = 50;
  10. CMenu * control_menu = GetSystemMenu (FALSE);
  11. VERIFY (control_menu->EnableMenuItem
  12.                     (SC_CLOSE, MF_GRAYED ) != -1);
  13. }
  14.  
  15. BEGIN_MESSAGE_MAP (ostreamWnd, CStrWnd)
  16.     ON_WM_CLOSE ()
  17. END_MESSAGE_MAP ()
  18.  
  19. void ostreamWnd::PutText (const char * buf,
  20.                           int no_of_chars)
  21. {
  22. int ub = text_buffer.GetUpperBound ();
  23. if (ub < 0)
  24.     //  text_buffer is empty so initialise it
  25.     //  by adding a null entry
  26.     {
  27.     text_buffer.Add ("");
  28.     ub = text_buffer.GetUpperBound ();
  29.     }
  30. char * ptr = (char *) buf;
  31. for (int i = 0; i < no_of_chars; i++)
  32.     {
  33.     if (*buf != '\n')
  34.         //  Append the character to the end of the
  35.         //  last CString in the text_buffer
  36.         text_buffer [ub] += *buf;
  37.     else
  38.         {
  39.         text_buffer.Add ("");   //  Add a new line
  40.         ub = text_buffer.GetUpperBound ();
  41.         }
  42.     buf++;
  43.     }
  44. while (text_buffer.GetUpperBound ()
  45.         >= max_lines_in_buffer)
  46.     text_buffer.RemoveAt (0);
  47. UpdateScreen ();
  48. }
  49.